home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / windows 95 utilities / programming tools / extended pagecontrol / readme.txt < prev    next >
Text File  |  1997-04-19  |  14KB  |  378 lines

  1.  
  2.         Extended PageControl and Extended TabControl v2.2
  3.         for Delphi and Borland C++Builder
  4.         ---------------------------------------------------------
  5.  
  6.         ExtPageControl and ExtTabControl are enhancements of
  7.         component TPageControl and TTabControl in Delphi 2 / 3
  8.         and Borland C++Builder.
  9.  
  10.  
  11.         What are the enhancements of these components?
  12.         ==============================================
  13.  
  14.          - You can change the color of active and inactive
  15.            tabs
  16.  
  17.          - Each tab can have a bitmap
  18.  
  19.          - You can select different font for active and inactive
  20.            tabs
  21.  
  22.          - Give the TabSheets another background color
  23.  
  24.          - Tabs can be placed on top, bottom, the left or
  25.            right side of the component
  26.  
  27.          - A button mode is available if tabs are placed on
  28.            top. In button mode the components becomes borderless.
  29.            That can be usefully if you want to write wizard-like
  30.            programs (set property TabVisible to false on all
  31.            tabsheets).
  32.  
  33.          - Define a different Hint for each tab
  34.  
  35.          - Disabled TabSheets/Tabs get a grayed tab-text (as
  36.            everyone expects on a disabled control)
  37.  
  38.          - A new OwnerDraw style is established (event OnDrawTab).
  39.            Using this event you can draw the contents of the tabs
  40.            yourself.
  41.  
  42.          - Support for accelerator keys (ALT + hotkey)
  43.  
  44.          - Successfully tested with Delphi 3
  45.  
  46.  
  47.         Note:
  48.         To place tabs on left, right or bottom of the component you
  49.         may need an updated version of Microsofts Common Controls
  50.         library ComCtl32.DLL. A new version of ComCtl32.DLL ships
  51.         with Windows NT 4, Windows 97 and Internet Explorer 3. You
  52.         can download Internet Explorer from Microsofts Web-Site
  53.         http://www.microsoft.com/ie/download/
  54.  
  55.  
  56.  
  57.         Files
  58.         =====
  59.  
  60.           EXTPAGE.DCR  ->  component image for Delphi and C++Builder
  61.           EXTPAGE.DCU  ->  component for Delphi
  62.           EXTPAGE.HPP  ->  include file for C++Builder
  63.           EXTPAGE.INT  ->  interface file for user
  64.           EXTPAGE.OBJ  ->  component for C++Builder
  65.           FILE_ID.DIZ  ->  short information for user
  66.           ORDER.TXT    ->  order information for user
  67.           README.TXT   ->  this file
  68.           SAMPLE.DPR   ->  sample project for Delphi
  69.           SAMPLE.EXE   ->  running sample program
  70.           SAMPLE1.DFM  ->  sample form for Delphi and C++Builder
  71.           SAMPLE1.PAS  ->  sample file for Delphi and C++Builder
  72.  
  73.  
  74.  
  75.         Installation
  76.         ============
  77.  
  78.  
  79.           Installation in Delphi
  80.           ======================
  81.  
  82.           1. Copy files EXTPAGE.DCR and EXTPAGE.DCU into a directory,
  83.              where your components reside, for instance
  84.              C:\Programs\Delphi2\Lib
  85.  
  86.           2. From the Delphi menu select
  87.              Component | Install ...
  88.  
  89.           3. Press the Add button, and select the path and filename of
  90.              EXTPAGE.DCU. In the browse dialog pull down the 'Files of
  91.              Type' combo box at the bottom and select file type (*.DCU).
  92.  
  93.           4. Back on the Install Components screen press OK.
  94.  
  95.           If installation succeeds you should see the ExtPageControl
  96.           and ExtTabControl appear on the Win95 palette. If you have any
  97.           difficulty installing the components refer to the Delphi Help
  98.           system.
  99.  
  100.  
  101.           Installation in Borland C++Builder
  102.           ==================================
  103.  
  104.           1. Copy files EXTPAGE.DCR and EXTPAGE.OBJ into a directory,
  105.              where your components reside, for instance
  106.              C:\Programs\Borland\CBuilder\Lib\Obj
  107.  
  108.           2. Copy file EXTPAGE.HPP into your include directory, for inst.
  109.              C:\Programs\Borland\CBuilder\Include\VCL
  110.  
  111.           3. From the Borland C++Builder menu select
  112.              Component | Install ...
  113.  
  114.           4. Press the Add button and select the path and filename of
  115.              your EXTPAGE.OBJ file. In the browse dialog pull down the
  116.              'Files of Type' combo box at the bottom and select file
  117.              type (*.OBJ).
  118.  
  119.           5. Back on the Install Components screen press OK.
  120.  
  121.           If installation succeeds you should see the ExtPageControl
  122.           and ExtTabControl appear on the Win95 palette. If you have any
  123.           difficulty installing the components refer to the Borland
  124.           C++Builder Help system.
  125.  
  126.  
  127.  
  128.         Registration
  129.         ============
  130.  
  131.         ExtPageControl and ExtTabControl are Shareware. A free Trial
  132.         version gives you the opportunity to try these native components.
  133.         They have the full functionality of the registered version, but
  134.         can run only when Delphi or Borland C++Builder is also running
  135.         on the PC.
  136.  
  137.         To deliver an application using these components, you must purchase
  138.         the applicable version. The registration fee is US $39.95. You get
  139.         full source code and lifetime technical support via Compuserve
  140.         and Internet. We will send the source code to your e-mail address.
  141.  
  142.         Please see file Order.txt for details.
  143.  
  144.  
  145.  
  146.         FAQ
  147.         ====
  148.  
  149.          Q: Is ExtPageControl a subclass of TCustomTabControl?
  150.  
  151.          A: ExtPageControl and ExtTabControl are indirect subclasses
  152.             of TCustomTabControl. That's the class tree:
  153.  
  154.                    TCustomTabControl         (Delphi VCL)
  155.                      |           |
  156.                TPageControl   TTabControl    (Delphi VCL)
  157.                      |           |
  158.             TExtPageControl   TExtTabControl
  159.  
  160.  
  161.  
  162.          Q: Why have a uniform tab width? Can tabs be different widths?
  163.             I need this functionality.
  164.  
  165.          A: Tabs can have different width if they are on top or on
  166.             bottom of the control. Set property TabWidth to zero.
  167.             Only if the tabs are on the left or right side of the
  168.             control they must have the same (fixed) width.
  169.  
  170.  
  171.  
  172.          Q: Is it possible to have each tab a different color?
  173.  
  174.          A: Yes, simply insert some code in event OnDrawTab. In Delphi
  175.             write:
  176.  
  177.  
  178.             with TExtPageControl(Control) do begin
  179.               Case Index Of
  180.                 // color of Tab 1
  181.                 0: Canvas.Brush.Color:= RGB(192, 220, 192);
  182.  
  183.                 // color of Tab 2
  184.                 1: Canvas.Brush.Color:= clYellow;
  185.  
  186.                 // color of Tab 3
  187.                 2: Canvas.Brush.Color:= RGB(166, 202, 240);
  188.               End;
  189.               Canvas.FillRect(RectBg);
  190.               DefaultDrawTab(Index, RectFg, State);
  191.             end;
  192.  
  193.  
  194.             Check if unit StdCtrls is included in the uses clause of your
  195.             file. In C++Builder you can write:
  196.  
  197.  
  198.             TExtPageControl *ExtPgCtrol = (TExtPageControl*)Control;
  199.             switch(Index)
  200.             {
  201.               case 0: // color of Tab 1
  202.                 ExtPgCtrol->Canvas->Brush->Color = RGB(192, 220, 192);
  203.                 break;
  204.               case 1: // color of Tab 2
  205.                 ExtPgCtrol->Canvas->Brush->Color = clYellow;
  206.                 break;
  207.               case 2: // color of Tab 3
  208.                 ExtPgCtrol->Canvas->Brush->Color = RGB(166, 202, 240);
  209.                 break;
  210.             };
  211.             ExtPgCtrol->Canvas->FillRect(RectBg);
  212.             ExtPgCtrol->DefaultDrawTab(Index, RectFg, State);
  213.  
  214.  
  215.  
  216.          Q: How do you go about changing the lettering color of one tab?
  217.             Lets say you have five tabs, all the tabs have gray background
  218.             and black lettering which is the norm.  One of the tabs need to
  219.             stand out and be a different color (just for the letters), the
  220.             background would remain the same.
  221.  
  222.          A: In Delphi insert this code in event OnDrawTab:
  223.  
  224.  
  225.             with TExtPageControl(Control) do begin
  226.               Case Index Of
  227.                 0: Canvas.Font.Color:= clNavy;  // blue text on Tab 1
  228.                 1: Canvas.Font.Color:= clRed;   // red text on Tab 2
  229.                 2: Canvas.Font.Color:= clGreen; // green text on Tab 3
  230.               End;
  231.               DefaultDrawTab(Index, RectFg, State);
  232.             end;
  233.  
  234.  
  235.             Check if unit StdCtrls is included in the uses clause of your
  236.             file. In C++Builder insert this code in event OnDrawTab:
  237.  
  238.  
  239.             TExtPageControl *ExtPgCtrol = (TExtPageControl*)Control;
  240.             switch(Index)
  241.             {
  242.               case 0: // blue text on Tab 1
  243.                 ExtPgCtrol->Canvas->Font->Color = clNavy;
  244.                 break;
  245.               case 1: // red text on Tab 2
  246.                 ExtPgCtrol->Canvas->Font->Color = clRed;
  247.                 break;
  248.               case 2: // green text on Tab 3
  249.                 ExtPgCtrol->Canvas->Font->Color = clGreen;
  250.                 break;
  251.             };
  252.             ExtPgCtrol->DefaultDrawTab(Index, RectFg, State);
  253.  
  254.  
  255.  
  256.          Q: I currently have a PageControl that is about 8 pages
  257.             big with a lot of controls on each page. Is it possible to
  258.             substitute ExtPageControl with PageControl without
  259.             starting from scratch. I tried the cut and paste routine
  260.             along with all the source but its a real pain and not
  261.             working to well.
  262.  
  263.          A: Select your form in design-mode. Press keys ALT+F12 -> you
  264.             should be in form-edit mode now. Search for your TPageControl
  265.             and replace it by TExtPageControl. Press ALT+F12 again and
  266.             save your work. This works the same way in Delphi and Borland
  267.             C++Builder.
  268.  
  269.  
  270.  
  271.          Q: How do I get bitmaps into the tabs? How do I use property
  272.             TabGlyphs?
  273.  
  274.          A: All images for the different tabs are stored in one large
  275.             bitmap (property TabGlyphs.Glyph). All images must be the same
  276.             size and next to each other in a horizontal row. You must
  277.             specify the number of images that are in the bitmap with the
  278.             TabGlyphs.NumGlyphs property. If you have for instance 5 tabs
  279.             in your control and each tab image has a height of 18
  280.             pixel and a width of 16 pixel, then the bitmap must be 18 pixel
  281.             high and 5*16 = 80 pixel wide. Set property TabGlyphs.NumGlyphs
  282.             to 5.
  283.  
  284.             You can create the bitmap with any bitmap editor. With Delphi
  285.             and Borland C++Builder comes an ImageEditor (imagedit.exe).
  286.             Property TabGlyphs.TransparentColor determines partial
  287.             transparent parts in the image.
  288.  
  289.             Property TabGlyphs.Spacing determines the number of pixels
  290.             between the image (specified in the Glyph property) and the text
  291.             (specified in the Caption property of each TabSheet for Ext-
  292.             PageControl and specified in property Tabs for ExtTabControl).
  293.             The default value is 5 pixels.
  294.  
  295.  
  296.  
  297.          Q: What is largest Glyph size that can be used? (21x21, OK?)
  298.  
  299.          A: I'm not aware of any glyph size limitation. So, 21x21 should
  300.             work without problems.
  301.  
  302.  
  303.  
  304.          Q: Some Pagecontrols offer system resource reduction by freeing
  305.             window handles for all pages except the current one.  I now
  306.             have so many controls in my Extpage2 that I really need a
  307.             feature like that. Can you add such a feature to Extpage2?
  308.  
  309.          A: Yes, the public procedure DestroyAllOtherSheetHandles in
  310.             ExtPageControl frees the resources of all TabSheets except
  311.             the current one. If you call this procedure in event OnChange
  312.             of the PageControl then only the current Sheet uses system
  313.             resources.
  314.  
  315.             In Delphi you may write:
  316.  
  317.             procedure TForm1.ExtPageControl1Change(Sender: TObject);
  318.             begin
  319.               TExtPageControl(Sender).DestroyAllOtherSheetHandles;
  320.             end;
  321.  
  322.  
  323.             In Borland C++Builder write:
  324.  
  325.             void __fastcall TForm1::ExtPageControl1Change(TObject *Sender)
  326.             {
  327.               ((TExtPageControl*)Sender)->DestroyAllOtherSheetHandles();
  328.             }
  329.  
  330.  
  331.  
  332.          Q: Is there a difference in when OnChange event is fired between
  333.             Delphi's PageControl and your ExtPageControl?
  334.  
  335.          A: Yes. Let's say you are on page TabSheet1. A function call like
  336.  
  337.               ExtPageControl1.ActivePage:= TabSheet2;
  338.  
  339.             selects page TabSheet2 and fires the events OnChanging and On-
  340.             Change. The same function call does not fire OnChanging / On-
  341.             Change events in Delphi's PageControl.
  342.  
  343.             OnChanging and OnChange events are also fired if property Tab-
  344.             Index is changed in ExtTabControl.
  345.  
  346.  
  347.  
  348.          Q: How can I disable a Tab in ExtTabControl?
  349.  
  350.          A: You can disable a Tab at run-time only. To disable the third
  351.             Tab write:
  352.  
  353.               ExtTabControl1.TabEnabled[2]:= False;
  354.  
  355.  
  356.  
  357.          Q: How can I disable a Tab in ExtPageControl?
  358.  
  359.          A: A Tab is disabled if the corresponding Page is disabled.
  360.  
  361.               TabSheet3.Enabled:= False;
  362.               ExtPageControl1.Invalidate;
  363.  
  364.  
  365.  
  366.  
  367.         By the way, you can always switch between the pages of a PageControl
  368.         by pressing the keys CTRL + TAB. Pressing CTRL + SHIFT + TAB switches
  369.         back. These shortcuts work system wide with all PageControls.
  370.  
  371.  
  372.  
  373.         Jan - Michael Strube
  374.         e-mail: 100333.2744@compuserve.com
  375.         WWW: http://ourworld.compuserve.com/homepages/praxisservice/
  376.  
  377.  
  378.                                -*- EOF -*-